package org.custom.spring.boot.datasource.service;

import org.custom.spring.boot.datasource.entity.datasource.CustomDataSourceProperties;

import java.util.List;

/**
 * 数据源相关服务接口
 *
 * @author 李坤
 * @date 2022/3/31 10:58
 */
public interface DataSourceService {
    /**
     * 查询所有的自定义动态数据源配置信息
     *
     * @return 自定义动态数据源配置信息列表
     */
    List<CustomDataSourceProperties> findAllCustomDataSourceProperties();

    /**
     * 获取并加载用户配置的数据源信息
     *
     * @return 数据源信息
     */
    List<CustomDataSourceProperties> obtainWithLoadCustomDataSourceProperties();

    /**
     * 根据数据源所有者查询所有的自定义动态数据源配置信息
     *
     * @param owner 数据源所有者
     *
     * @return 自定义动态数据源配置信息列表
     */
    List<CustomDataSourceProperties> findCustomDataSourcePropertiesByOwner(String owner);

    /**
     * 测试是否能够联通给定属性的数据源
     *
     * @param dataSourceProperties 数据源属性
     *
     * @return 连接结果
     */
    boolean try2ConnectDataSource(CustomDataSourceProperties dataSourceProperties);

    /**
     * 保存自定义动态数据源配置信息
     *
     * @param dataSourceProperties 自定义动态数据源配置信息
     *
     * @return 操作结果
     */
    boolean saveCustomDataSourceProperties(CustomDataSourceProperties dataSourceProperties);
}
